#e
#Title[zNub666v]
#Text[wiUĂ邻̎aV]
#ScriptVersion[2]
script_enemy_main
{
	let scroll=0;
	let flag=0;
	let cx=GetCenterX();//STGV[̒SxW擾
	let cy=GetCenterY();//STGV[̒SyW擾
	let boss=GetCurrentScriptDirectory~"img\boss7-2.png";
	let eye=GetCurrentScriptDirectory~"img\bg7-1.png";
	let asa=GetCurrentScriptDirectory~"img\bg7-2.png";
	let angleplus=0;
	LoadUserShotData(GetCurrentScriptDirectory~"shot.txt");
	@Initialize
	{
		SetScore(30000);
		SetLife(600);
		SetDamageRate(10,0);
		SetMovePosition02(cx,cy-120,60);
		SetTimer(80);
		SetInvincibility(60);
		LoadGraphic(boss);
		LoadGraphic(eye);
		LoadGraphic(asa);
		shottask;
		drawtask;
		bombtask;
		CutIn(YOUMU,"zNub666v",0,0,0,0,0);//XyJ[h\
	}
	@MainLoop
	{
		yield;
	}
	@Finalize
	{
		loop(16)
		{
			CreateItem(ITEM_SCORE,GetX+rand(-30,30),GetY+rand(-30,30));
		}
		CreateItem(ITEM_BOMB,GetX,GetY);
		DeleteGraphic(boss);
		DeleteGraphic(eye);
		DeleteGraphic(asa);
	}
	@DrawLoop
	{
		SetTexture(boss);	
		if(flag==1)
		{
			SetGraphicRect(52,0,81,63);
		}
		else if(flag==2)
		{
			SetGraphicRect(24,0,52,63);
		}
		else
		{
			SetGraphicRect(0,0,24,63);
		}
		SetGraphicScale(1,1);
		SetGraphicAngle(0,0,0);
		DrawGraphic(GetX,GetY);
	}
	@BackGround
	{
		SetColor(128,128,128);
		SetTexture(eye);	
		SetGraphicRect(0,0,384,448);
		SetAlpha(255);
		SetGraphicScale(1,1);
		SetGraphicAngle(0,0,0);
		DrawGraphic(cx,cy);
		SetColor(255,255,255);
		SetTexture(asa);	
		SetGraphicRect(0,0,888,189*5);
		SetAlpha(64);
		SetGraphicScale(0.5,0.75);
		SetGraphicAngle(0,0,0);
		DrawGraphic(cx+scroll,cy);
		DrawGraphic(cx+scroll-444,cy);
		if(scroll>444)
		{
			scroll=0;
		}
	}
	task shottask
	{
			wait(60);
		CreateObjShot01;
		CreateObjShot02;
		CreateObjShot03;
		CreateObjLaser(70,225,84,90);
		CreateObjLaser(70,0,56,90);
		CreateObjLaser(14,315,28,90);
		CreateObjLaser(20,270,56,194);
		CreateObjLaser(75,225,84,184);
		CreateObjLaser(145,180,56,158);
		CreateObjLaser(174,135,28,140.8);
		CreateObjLaser(173,90,56,132);


		CreateObjLaser(93,0,112,49);
		CreateObjLaser(93,225,54,49);
		CreateObjLaser(74,45,28,326);
		CreateObjLaser(101,90,56,323);
		CreateObjLaser(150,135,28,335.7);
		CreateObjLaser(162,180,28,344.5);
		CreateObjLaser(197,315,56,7);
		CreateObjLaser(255,0,140,40);
		CreateObjLaser(253,45,28,46);
		CreateObjLaser(188,90,132,76.5);
		CreateObjLaser(164,135,30,82);
		CreateObjLaser(164,0,55,82);
 
		CreateObjLaser(41,270,140,284);
		CreateObjLaser(41,45,56,284);
		CreateObjLaser(155,270,84,329.5);
		CreateObjLaser(155,45,28,329.5);
		CreateObjLaser(183,0,57,327.5);
		CreateObjLaser(218,315,28,315);
		CreateObjLaser(220.5,270,224,308);
		CreateObjLaser(195,225,87,243);
		CreateObjLaser(161,0,53,202);
		CreateObjLaser(161,135,28,202);
		wait(180);
		loop
		{
			wait(90);
			if(angleplus<3)
			{
				angleplus+=0.2;
			}
			CreateLaser01(GetX,GetY,4,GetAngleToPlayer,64,8,GREEN01,0);
		}
	}
	task CreateObjShot01
	{
		let bx=cx-70;
		let by=cy;
		let angle=0;
		let angle2=0;
		let count=0;
		let r=0;
		let angle3=0;
		let obj = Obj_Create(OBJ_SHOT);
		Obj_SetPosition(obj,bx,by);
		ObjShot_SetGraphic(obj, 151);
		ObjShot_SetDelay(obj, 60);
		ObjShot_SetBombResist(obj, true);
		Obj_SetAutoDelete(obj,false);
		while(!Obj_BeDeleted(obj))
		{
			bx=bx+2.8*cos(angle);
			by=by+2.8*sin(angle);

			r=((bx - cx) ^ 2 + (by - cy) ^ 2) ^ 0.5;
			angle3=atan2(by-cy,bx-cx);
			Obj_SetPosition(obj,cx+r*cos(angle3+angle2),cy+r*sin(angle3+angle2));
			angle2+=angleplus;
			count++;
			if(count==20){angle=315}
			if(count==30){angle=270}
			if(count==50){angle=225}
			if(count==80){angle=180}
			if(count==100){angle=135}
			if(count==110){angle=90}
			if(count==130){angle=45}
			if(count==160){angle=0;count=0}

			yield;
		}
	}
	task CreateObjShot02
	{
		let bx=cx-70;
		let by=cy+60;
		let angle=225;
		let angle2=0;
		let count=0;
		let r=0;
		let angle3=0;
		let speed=2.8;
		let obj = Obj_Create(OBJ_SHOT);
		Obj_SetPosition(obj,bx,by);
		ObjShot_SetGraphic(obj, 151);
		ObjShot_SetDelay(obj, 60);
		ObjShot_SetBombResist(obj, true);
		Obj_SetAutoDelete(obj,false);
		while(!Obj_BeDeleted(obj))
		{
			bx=bx+speed*cos(angle);
			by=by+speed*sin(angle);

			r=((bx - cx) ^ 2 + (by - cy) ^ 2) ^ 0.5;
			angle3=atan2(by-cy,bx-cx);
			Obj_SetPosition(obj,cx+r*cos(angle3+angle2),cy+r*sin(angle3+angle2));
			angle2+=angleplus;
			count++;
			if(count==20){angle=180}
			if(count==40){angle=135}
			if(count==50){angle=90;speed=2.705}
			if(count==100){angle=45;speed=2.8}
			if(count==110){angle=0}
			if(count==160){angle=315}
			if(count==180){angle=0}
			if(count==190){angle=315}
			if(count==200){angle=270}
			if(count==220){angle=225}
			if(count==230){angle=180}
			if(count==270){angle=225;count=0}

			yield;
		}
	}
	task CreateObjShot03
	{
		let bx=cx+40;
		let by=cy+10;
		let angle=45;
		let angle2=0;
		let count=0;
		let r=0;
		let angle3=0;
		let obj = Obj_Create(OBJ_SHOT);
		Obj_SetPosition(obj,bx,by);
		ObjShot_SetGraphic(obj, 151);
		ObjShot_SetDelay(obj, 60);
		ObjShot_SetBombResist(obj, true);
		Obj_SetAutoDelete(obj,false);
		while(!Obj_BeDeleted(obj))
		{
			bx=bx+2.8*cos(angle);
			by=by+2.8*sin(angle);

			r=((bx - cx) ^ 2 + (by - cy) ^ 2) ^ 0.5;
			angle3=atan2(by-cy,bx-cx);
			Obj_SetPosition(obj,cx+r*cos(angle3+angle2),cy+r*sin(angle3+angle2));
			angle2+=angleplus;
			count++;
			if(count==20){angle=90}
			if(count==50){angle=45}
			if(count==60){angle=0}
			if(count==80){angle=315}
			if(count==90){angle=270}
			if(count==170){angle=225}
			if(count==200){angle=180}
			if(count==220){angle=135}
			if(count==230){angle=90}
			if(count==280){angle=45;count=0}

			yield;
		}
	}
	task CreateObjLaser(let r, let angle, let length,let angle2)
	{
		let obj = Obj_Create(OBJ_LASER);
		Obj_SetSpeed(obj, 0);
		Obj_SetAngle(obj, angle);
		ObjShot_SetGraphic(obj, 253);
		ObjShot_SetDelay(obj, 0);
		ObjLaser_SetLength(obj, length);
		ObjLaser_SetWidth(obj, 4);
		ObjLaser_SetSource(obj, false);
		Obj_SetCollisionToPlayer(obj,false);
		Obj_SetAutoDelete(obj,false);
		while(!Obj_BeDeleted(obj))
		{
		Obj_SetAngle(obj, angle);
			Obj_SetPosition(obj,cx+r*cos(angle2+90),cy+r*sin(angle2+90));
			angle+=angleplus;
			angle2+=angleplus;
			yield;
		}
	}
	task drawtask
	{
		let x=0;
		loop
		{	
			if(GetX>x+0.5)
			{
				flag=1;
			}
			else if(GetX<x-0.5)
			{
				flag=2;
			}
			else
			{
				flag=0;
			}
			x=GetX;
			scroll++;
			yield;
		}
	}
	task bombtask
	{
		loop
		{
			if(OnBomb)
			{
				SetAlpha(64);
				SetDamageRate(0,0);
			}
			else
			{
				SetAlpha(255);
				SetDamageRate(10,0);
				SetCollisionA(GetX(),GetY(),24);
				SetCollisionB(GetX(),GetY(),24);
			}
			yield;
		}
	}
	function wait(w) 
	{
		loop(w)
		{
			yield;
		}
	}
}